package van.planifolia.methodref;

import java.util.function.Function;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/11/4 16:37
 */
public class MethodRef1 {
    public static void main(String[] args) {
        //想要使用lambda或者方法引用我们必须要有一个函数式接口，因为我们下面定义的是一个有参数有返回值的，我们就使用
        // Fun型的函数式接口
        // 因为这里我们只是去调用了我们预先定义好的方法，并且符合静态方法引用的替换规范所以可以直接将传统的lambda替换成静态方法引用
//        Function<Integer[],Integer> function = integers -> MethodRef1.sum(integers);
        Function<Integer[],Integer> function = MethodRef1::sum;
        Integer[] arr = {1,2,3,4,5};
        // 将数组传入我们上面重写的方法中并且打印返回值
        System.out.println(function.apply(arr));
    }

    /**
     * 模拟一个静态方法，计算数组之合
     * @param integers 要被计算的数组
     * @return 数组内容的和
     */
    public static Integer sum(Integer[] integers) {
        int sum = 0;
        for (Integer integer : integers) {
            sum = sum + integer;
        }
        return sum;
    }
}
